package com.li.onjava8.concurrent.cf;

import com.li.onjava8.concurrent.cf.task.Breakable;

import java.util.stream.Stream;

/**
 * 使用Streams，直到你应用了终端操作(如forEach())，一切都没有开始。
 * CompletableFuture执行工作并捕获任何异常以供以后检索。
 * 比较这两者并不是一件容易的事，因为Stream没有终端操作根本无法执行任何操作，但是Stream绝对不会存储其异常。
 * @author li
 * @date 2023/11/1 10:28
 */
public class StreamExceptions {
    static Stream<Breakable> test(String id, int failcount) {
        return Stream.of(new Breakable(id, failcount)).
                map(Breakable::work)
                .map(Breakable::work)
                .map(Breakable::work)
                .map(Breakable::work);
    }

    public static void main(String[] args) {
        test("A", 1);
        test("B", 2);
        Stream<Breakable> c = test("C", 3);
        test("D", 4);
        test("E", 5);
        System.out.println("Entering try");
        try {
            c.forEach(System.out::println);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }



}
